import { message } from "antd"
import axios from "axios"
// 设置请求的次数
let requestCount = 0
// 设置加载的提示
let requestLoading: any = null
// 开始加载的方法
const startLoading = () => {
  // 请求次数先++
  requestCount++
  // 判断如果没有的话就是第一次加载
  if (!requestLoading) {
    requestLoading = message.loading("加载中...", 0)
  }
}
// 结束加载的方法
const endLoading = () => {
  // 请求次数--
  requestCount--
  if (requestCount <= 0) {
    requestCount = 0
    if (requestLoading) {
      requestLoading()
      requestLoading = null
    }
  }
}
const http = axios.create({
  baseURL: "http://172.27.2.110",
  timeout: 1000 * 10
})
// 添加请求拦截器
http.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  startLoading()
  const token = localStorage.getItem("token")
  if (token) {
    const author = token.startsWith("Bearer") ? token : `Bearer ${token}`
    config.headers.Authorization = author
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  endLoading()
  return Promise.reject(error)
})

// 添加响应拦截器
http.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  endLoading()
  return response
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  endLoading()
  return Promise.reject(error)
})
export default http
